1. Field of the Invention
The present invention relates to the field of information handling systems and, more particularly, to a system and method for managing logical device state information for device drivers in an information handling system.
2. Description Of Related Art
An information handling system typically includes several input and/or output devices, such as a keyboard, video display, printer, modem, and mouse. These devices are usually managed by one or more device drivers. A device driver is a program that manages the flow of data to and from a device. In many operating systems, device drivers are the only programs which can handle interrupts from devices. A device driver that manages the flow of data between an information handling system and a printer or video display is referred to as a presentation device driver.
In a multi-windowed, multi-user information handling system, there are usually several processes executing in the system at any given time. These processes can each have their own characteristics. This means that operating system specific information needs to be kept for each process. When the process which is executing relates to a device, the operating system specific information which is kept is referred to as logical device state information. For example, the logical device state information for a printer may include font type, color, mix modes, transforms, and font size. Note that physical device state information, such as current physical color or current physical position, is information that is typically maintained by the device driver itself.
When a device manufacturer develops a new device, the device manufacturer also develops a device driver for each operating system under which the new device will operate. For example, if a printer manufacturer develops a new printer, the manufacturer will also develop corresponding device drivers to allow the printer to be attached to systems that run under several different operating systems. Device drivers are usually stored on diskettes or CD-ROMs, which are shipped with adapter cards sold along with the devices. Most operating systems include an xe2x80x9cinstall device driverxe2x80x9d option, which can be used to install a device driver. In the case of presentation devices, such as printers and displays, the adapter cards and printers typically include memory which can be used by the device driver, as well as circuitry, such as device processors, which can be used to control the devices.
One prior art approach to handling device driver development and managing logical device state information is through the use of application programming interfaces (APIs). An operating system defines APIs, through which application programs executing in the information handling system communicate with or use the devices attached to the system. The operating system also defines device driver interfaces (DDIs), which are used by the operating system to communicate with devices. When an application program invokes an API, the operating system typically performs some processing, and then executes one or more DDIs. There are several drawbacks to this prior art approach.
Whenever a new device is developed, a device driver must also be developed for each operating system supported. For each operating system supported, a device driver must implement functions to support every DDI defined by the operating system. In the case of a typical presentation device driver, there are many DDIs that must be implemented by the device driver. Because a separate device driver is developed for each supported operating system, the device driver developers must learn about each operating system, an often time-consuming process.
Another problem with this prior art approach is that logical device state information is typically maintained and stored by both the operating system and by the device driver. The operating system stores the logical device state information before calling a DDI. The operating system then passes control to the device driver, which also stores the information. If the device driver changes any logical device state information, the device driver makes the change in its copy of the logical device state information, and also must notify the operating system, through another DDI, that the logical device state information was changed. This results in redundant maintenance and storage of logical device state information. In addition, because the device driver maintains and stores logical device state information, device driver developers must be aware of operating system fundamentals, such as reentrancy and serialization. Furthermore, there may be times when the operating system, rather than the device driver, is better suited to handle particular functions, such as complex clipping functions.
Consequently, it would be desirable to have a system and method for managing logical device state information in an information handling system which would eliminate the redundancy found in prior art information handling systems. It would also be desirable to shorten the development time for new device drivers, while taking advantage of device processors which can be utilized by device drivers to efficiently manage devices.
Accordingly, the present invention is directed to a system and method of managing logical device state information in an information handling system. Logical device state information is stored only once, by the information handling system. Device drivers do not need to maintain and store redundant copies of logical device state information. A device driver indicates whether or not it needs to have logical device state information passed to it. Before calling a device driver to handle a device function, the information handling system checks to determine whether or not the device driver has indicated that it needs logical device state information passed to it. If so, the information handling system passes the appropriate logical device state information to the device driver. For device functions which are not hooked by the device driver, the information handling system maintains the device state.
The operating system creates at least one function table for each device detected in the information handling system, and registers default operating system programs in the function table to handle device functions. During initialization, control is passed to a device driver, at which time the device driver may register for any subset of the device functions in the appropriate function table. A device driver may register for a device function, without registering for the associated state change functions. Registration by the device driver overrides the default registration in the function table.
One of the embodiments of the invention is as sets of instructions resident in an information handling system.
An advantage of the present invention is that redundant copies of logical device state information are not maintained and stored by the information handling system. Another advantage of the present invention is that system efficiency is increased, as each device driver may register for the subset of functions it can most efficiently handle, without hooking operating system functions or handling all state specific functions associated with a particular device function. A further advantage of the present invention is that device driver development may proceed in an incremental fashion, and device driver developers do not have to learn details of every operating system on which a device may be installed.